package br.com.fiap.sas.managedbean;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;

import br.com.fiap.sas.bean.Correntista;
import br.com.fiap.sas.bean.Favorecido;
import br.com.fiap.sas.dao.CorrentistaDAO;

@ManagedBean
@SessionScoped
public class CorrentistaMB {

	private Correntista correntista = new Correntista();
	private String senhaDigitada;
	private List<SelectItem> itemsFavorecidos;
	private Boolean isLogged;
	
	public CorrentistaMB()
	{
		isLogged=false;
	}
	
	public Correntista getCorrentista() {
		return correntista;
	}

	public void setCorrentista(Correntista correntista) {
		this.correntista = correntista;
	}
	public String getSenhaDigitada() {
		return senhaDigitada;
	}

	public void setSenhaDigitada(String senhaDigitada) {
		this.senhaDigitada = senhaDigitada;
	} 	

	public String loginSenha() {
		
		String resultado = "senhaInvalida";
		try { 
			
			if(correntista.getAgenciaConta().getSenhaEletronica().equals(senhaDigitada)){
				resultado = "/secured/reservada?faces-redirect=true";
				setIsLogged(true);
			}

		} catch(Exception e) {
			
			resultado = "erro";
		}
		return resultado;
	}
	
	public String loginAgenciaConta() {
		
		String resultado = "erro";
		
		try{
			
			correntista = CorrentistaDAO.getCorrentistaDao(correntista.getAgenciaConta().getNumeroAgencia(), correntista.getAgenciaConta().getNumeroConta());

			if(correntista == null) resultado = "naoEncontrado";//agenciaContaInvalida
				
			else {
				resultado = "logar";
			}

		} catch(SQLException e) {		
			System.out.println(e.getMessage());
			resultado = "erro";
		}
		return resultado;
	}

	public List<SelectItem> getItemsFavorecidos() {
		itemsFavorecidos = new ArrayList<SelectItem>();
		if(correntista.getAgenciaConta().getCodigoContaPai() == 0)
			for (Favorecido f : FavorecidoMB.getFavorecidos(correntista.getCodigo(),correntista.getAgenciaConta().getCodigo()))
				itemsFavorecidos.add(new SelectItem(f.getCodigo(), f.getNomeExibicao()));
		else{
				Favorecido f = new Favorecido();
				f.setCodigo(correntista.getAgenciaConta().getCodigoContaPai());
				f.setNome(correntista.getNomeExibicao() + " - C/C");
				f.setCodigoCorrentista(correntista.getCodigo());
				f.setNumeroBanco("720");
				itemsFavorecidos.add(new SelectItem(f.getCodigo(), f.getNomeExibicao()));
		}
		return itemsFavorecidos;
	}
	
	public String logout() {
	    FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
	    return "/index.jsf?faces-redirect=true";
	}

	public Boolean getIsLogged() {
		return isLogged;
	}

	public void setIsLogged(Boolean isLogged) {
		this.isLogged = isLogged;
	}
}